﻿using System.ComponentModel;
using ActionLogic;
using BehaviorModel.Block.RandomGenerator;
using Model.Block;

namespace BehaviorModel.Block.Generator
{
    /// <summary>
    /// Generator block.
    /// </summary>
    public interface IGenerator : ISenderBlock, IExecutable, INotifyPropertyChanged

    {
        /// <summary>
        /// Generator storage.
        /// </summary>
        GeneratorStorage Storage { get; }

        /// <summary>
        /// Working start time.
        /// </summary>
        int StartTime { get; set; }

        /// <summary>
        /// Generator of next request init time.
        /// </summary>
        IRandomGenerator RequestGenerator { get; }

        /// <summary>
        /// Strategy of generating computation.
        /// </summary>
        RandomGeneratorType GeneratorType { get; set; }
    }
}
